Many types of conventional computerized devices include hardware (i.e., circuitry and/or software that other software applications (i.e., executing processes) or devices can access via one or more interfaces commonly referred to as application programming interfaces (APIs). As an example, a data storage system can include a collection of disk drives that may be coupled via a high-speed connection (e.g., SCSI, Fiber-Channel, or the like) to a computer system which operates as a data storage server that allows software applications to access and manage data stored within the data storage system. The server computer system may operate a data storage access software system which provides the processing logic and functionality required to access and manage the data stored within the data storage system. The data storage access software can provide a set of functions that collectively define an application programming interface. Other software applications that require access to data within the data storage system can incorporate the application programming interface into their code and can make calls to functions defined within the application programming interface. By providing such functions via an application programming interface, the low-level processing required to send, receive and/or manage data to, from, or within the data storage system is encapsulated within the data storage access software functions. Other software applications thus only need to make calls to the required functions of the application programming interface in order to include such complex processing.
A typical conventional application programming interface defines a set of functions and respective function parameters which another entity (i.e., the calling entity) such as a software process may invoke by making a call to one or more of the functions defined by or within the application programming interface. When the calling entity invokes a function call to a function defined within the application programming interface, the calling entity typically supplies any required input values for any input parameters required for that function call. When an application programming interface function call is made in this manner, the code of the function (i.e., the processing logic included within the software application which provides the application programming interface) receives any associated input parameters and processes these input parameters according to the processing logic for that function. The processing logic of the function may produce data or other information which is output or returned from the function as a series of one or more output parameters. The calling entity can access the data processed by the function by referencing the output values associated with the output parameters which it receives as a result of having invoked the function call to the application programming interface.
During the process of developing a software application, a software developer writes application code (e.g., C code) to include the aforementioned functLon calls to functions defined within an application programming interface as needed to accomplish the goals of the software application under development. As an example, if a software developer is developing a database application, the database application code may be written to include function calls to functions within an application programing interface provided by the data storage access software mentioned above to allow the database application to store and retrieve data from the data storage system during its operation or execution.
In some situations, a software application operating on a computer system might require access to a function within an application programming interface which is available (i.e., which executes) on another computer system. Conventional software mechanisms have been developed to allow a software application operating on one computer system to remotely invoke the processing functionality associated with a function of an application programming interface provided on another computer system. An example of such a conventional software package is called remote procedure call or RPC. To use RPC, a software developer includes special RPC function calls into the code of the software application that requires remote access to the application programming interface. In addition, the software developer must manually create software that operates on the remote computer system which contains the application programming interface in order to receive and process an RPC function call. In other words, the software developer must manually develop a client side piece of software which invokes RPC function calls and must also manually develop a server side piece of software to receive and process those calls in conjunction with the application programming interface.